package _02011

func moveZeros(nums []int) {
	k := 0

	for i, n := range nums {
		if n != 0 {
			if i != k {
				nums[k], nums[i] = nums[i], nums[k]
			}
			k += 1
		}
	}
}

// 时间复杂度: O(N)
// 空间负责度: O(1)
func moveZerosV2(nums []int) {
	// [0...k) 中保存所有遍历过的非0元素
	k := 0

	for _, n := range nums {
		if n != 0 {
			nums[k] = n
			k += 1
		}
	}

	for i := k; i < len(nums); i++ {
		nums[i] = 0
	}

}
